# 基础类信息
from seaman.core import Validator


class BaseData:
    # 测井深度
    depth: float
    # 倾斜角
    inclination: float
    # 方位角
    azimuth: float



# 补全数据
class CompletionData(BaseData):
    def __init__(self, t: BaseData):
        super().__init__()
        if Validator.isNotEmpty(t):
            self.depth = t.depth
            self.inclination = t.inclination
            self.azimuth = t.azimuth
        self.north = 0.0
        self.east = 0.0
        self.true_vertical_depth = 0.0
        self.full_angle = 0.0

    # 北向偏移 North 即三维坐标系中 X
    north: float
    # 东向偏移 East 即三维坐标系 Y
    east: float
    # 垂直井深 TVD 即三维坐标系中 Z
    true_vertical_depth: float
    # 全角
    full_angle: float


# 插值数据
class InterpolationData(CompletionData):
    # 曲率半径
    curvature_radius: float
    # 圆弧角
    arc_angle: float
    # 狗腿度
    dog_leg_severity: float
    # 工具面角度
    face_angle: float
    # 井斜角变化率
    inclination_rate: float
    # 方位角变化率
    azimuth_rate: float

    # 初始化方法
    def __init__(self, t: CompletionData):
        super().__init__(t)
        if Validator.isNotEmpty(t):
            self.depth = t.depth
            self.inclination = t.inclination
            self.azimuth = t.azimuth
            self.north = t.north
            self.east = t.east
            self.true_vertical_depth = t.true_vertical_depth
            self.full_angle = t.full_angle

class AxialForceResult:
    # 测井深度
    depth: float
    # 倾斜角
    inclination: float
    # 井斜角变化率
    inclination_rate: float
    # 方位角
    azimuth: float
    # 方位角变化率
    azimuth_rate: float
    # # 狗腿度
    dog_leg_severity: float
    # 弯矩
    bending_moment: float
    #########################################
    # 条件绘图参数
    # 正压力
    N: float
    # N h
    N_weak_high: float
    # N l
    N_weak_low: float
    # N rate%
    N_weak_rate_low: float
    # 张力
    F: float
    # F h
    F_weak_high: float
    # F l
    F_weak_low: float
    # F rate

